<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Networking TS compatibility</title>
<link rel="stylesheet" href="../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Asio">
<link rel="up" href="../index.html" title="Asio">
<link rel="prev" href="reference/yield_context.html" title="yield_context">
<link rel="next" href="std_executors.html" title="Proposed Standard Executors">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="asio C++ library" width="250" height="60" src="../asio.png"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="reference/yield_context.html"><img src="../prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../home.png" alt="Home"></a><a accesskey="n" href="std_executors.html"><img src="../next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="asio.net_ts"></a><a class="link" href="net_ts.html" title="Networking TS compatibility">Networking TS compatibility</a>
</h2></div></div></div>
<p>
      Asio now provides the interfaces and functionality specified by the "C++
      Extensions for Networking" Technical Specification. In addition to access
      via the usual Asio header files, this functionality may be accessed through
      special headers that correspond to the header files defined in the TS. These
      are listed in the table below:
    </p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
              <p>
                Networking TS header
              </p>
            </th>
<th>
              <p>
                Asio header
              </p>
            </th>
</tr></thead>
<tbody>
<tr>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">buffer</span><span class="special">&gt;</span></code>
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">executor</span><span class="special">&gt;</span></code>
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">executor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">internet</span><span class="special">&gt;</span></code>
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">internet</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">io_context</span><span class="special">&gt;</span></code>
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">io_context</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">net</span><span class="special">&gt;</span></code>
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">net</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">netfwd</span><span class="special">&gt;</span></code>
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">netfwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">socket</span><span class="special">&gt;</span></code>
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">socket</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">timer</span><span class="special">&gt;</span></code>
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">timer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
              </p>
            </td>
</tr>
</tbody>
</table></div>
<p>
      In some cases the new Networking TS compatible interfaces supersede older Asio
      facilities. In these cases the older interfaces have been deprecated. The table
      below shows the new Networking TS interfaces and the facilities they replace:
    </p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
              <p>
                New interface
              </p>
            </th>
<th>
              <p>
                Old interface
              </p>
            </th>
<th>
              <p>
                Notes
              </p>
            </th>
</tr></thead>
<tbody>
<tr>
<td>
              <p>
                <a class="link" href="reference/io_context.html" title="io_context"><code class="computeroutput"><span class="identifier">io_context</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a>
              </p>
            </td>
<td>
              <p>
                The name <code class="computeroutput"><span class="identifier">io_service</span></code>
                is retained as a typedef.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/dispatch.html" title="dispatch"><code class="computeroutput"><span class="identifier">dispatch</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/dispatch.html" title="io_context::dispatch"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">dispatch</span></code></a>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">dispatch</span></code> free
                function can be used to submit functions to any <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
                or <a class="link" href="reference/ExecutionContext.html" title="Execution context requirements">ExecutionContext</a>.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/post.html" title="post"><code class="computeroutput"><span class="identifier">post</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/post.html" title="io_context::post"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">post</span></code></a>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">post</span></code> free function
                can be used to submit functions to any <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
                or <a class="link" href="reference/ExecutionContext.html" title="Execution context requirements">ExecutionContext</a>.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/defer.html" title="defer"><code class="computeroutput"><span class="identifier">defer</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/post.html" title="io_context::post"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">post</span></code></a>
                when the <a class="link" href="reference/asio_handler_is_continuation.html" title="asio_handler_is_continuation"><code class="computeroutput"><span class="identifier">asio_handler_is_continuation</span></code></a>
                hook returns true
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">defer</span></code> free function
                can be used to submit functions to any <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
                or <a class="link" href="reference/ExecutionContext.html" title="Execution context requirements">ExecutionContext</a>.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/io_context/poll.html" title="io_context::poll"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">poll</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/poll.html" title="io_context::poll"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">poll</span></code></a>
                overload that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/io_context/poll_one.html" title="io_context::poll_one"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">poll_one</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/poll_one.html" title="io_context::poll_one"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">poll_one</span></code></a> overload that takes
                <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/io_context/run.html" title="io_context::run"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/run.html" title="io_context::run"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">run</span></code></a>
                overload that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/io_context/run_one.html" title="io_context::run_one"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_one</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/run_one.html" title="io_context::run_one"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">run_one</span></code></a>
                overload that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/io_context/run_for.html" title="io_context::run_for"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_for</span></code></a>,
                <a class="link" href="reference/io_context/run_until.html" title="io_context::run_until"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_until</span></code></a>, <a class="link" href="reference/io_context/run_one_for.html" title="io_context::run_one_for"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_one_for</span></code></a>, and <a class="link" href="reference/io_context/run_one_until.html" title="io_context::run_one_until"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_one_until</span></code></a>
              </p>
            </td>
<td>
            </td>
<td>
              <p>
                These functions add the ability to run an <code class="computeroutput"><span class="identifier">io_context</span></code>
                for a limited time.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/io_context/restart.html" title="io_context::restart"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">restart</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/reset.html" title="io_context::reset"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">reset</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/io_context/io_context.html" title="io_context::io_context"><code class="computeroutput"><span class="identifier">io_context</span></code></a> constructor
                <code class="computeroutput"><span class="identifier">concurrency_hint</span></code>
                parameter is type <code class="computeroutput"><span class="keyword">int</span></code>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/io_context.html" title="io_context::io_context"><code class="computeroutput"><span class="identifier">io_context</span></code></a> constructor
                <code class="computeroutput"><span class="identifier">concurrency_hint</span></code>
                parameter is type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
              </p>
            </td>
<td>
              <p>
                The old constructor has not been retained as a deprecated overload.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/execution_context.html" title="execution_context"><code class="computeroutput"><span class="identifier">execution_context</span></code></a>,
                <a class="link" href="reference/execution_context__service.html" title="execution_context::service"><code class="computeroutput"><span class="identifier">execution_context</span><span class="special">::</span><span class="identifier">service</span></code></a>, and <a class="link" href="reference/execution_context__id.html" title="execution_context::id"><code class="computeroutput"><span class="identifier">execution_context</span><span class="special">::</span><span class="identifier">id</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context.html" title="io_context"><code class="computeroutput"><span class="identifier">io_service</span></code></a>,
                <a class="link" href="reference/io_context__service.html" title="io_context::service"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">service</span></code></a>, and <a class="link" href="reference/execution_context__id.html" title="execution_context::id"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">id</span></code></a>
              </p>
            </td>
<td>
              <p>
                The service-related functionality has been moved to the <code class="computeroutput"><span class="identifier">execution_context</span></code> base class. This
                may also be used as a base for creating custom execution contexts.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/execution_context/make_service.html" title="execution_context::make_service"><code class="computeroutput"><span class="identifier">make_service</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/execution_context/add_service.html" title="execution_context::add_service"><code class="computeroutput"><span class="identifier">add_service</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/strand.html" title="strand"><code class="computeroutput"><span class="identifier">strand</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context__strand.html" title="io_context::strand"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">strand</span></code></a>
              </p>
            </td>
<td>
              <p>
                This template works with any valid executor, and is itself a valid
                executor.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/executor_work_guard.html" title="executor_work_guard"><code class="computeroutput"><span class="identifier">executor_work_guard</span></code></a> and
                <a class="link" href="reference/make_work_guard.html" title="make_work_guard"><code class="computeroutput"><span class="identifier">make_work_guard</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context__work.html" title="io_context::work"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">work</span></code></a>
              </p>
            </td>
<td>
              <p>
                Work tracking is now covered by the <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
                requirements. These templates work with any valid executor.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/executor_binder.html" title="executor_binder"><code class="computeroutput"><span class="identifier">executor_binder</span></code></a>
                and <a class="link" href="reference/bind_executor.html" title="bind_executor"><code class="computeroutput"><span class="identifier">bind_executor</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/io_context/wrap.html" title="io_context::wrap"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">wrap</span></code></a>
                and <a class="link" href="reference/io_context__strand/wrap.html" title="io_context::strand::wrap"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">strand</span><span class="special">::</span><span class="identifier">wrap</span></code></a>
              </p>
            </td>
<td>
              <p>
                These templates work with any valid executor.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/async_result.html" title="async_result"><code class="computeroutput"><span class="identifier">async_result</span></code></a>
                with <code class="computeroutput"><span class="identifier">CompletionToken</span></code>
                and <code class="computeroutput"><span class="identifier">Signature</span></code> template
                parameters
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="identifier">handler_type</span></code> and
                single parameter <code class="computeroutput"><span class="identifier">async_result</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">async_result</span></code>
                trait is now the single point of customisation for asynchronous operation
                completion handlers and return type.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/associated_executor.html" title="associated_executor"><code class="computeroutput"><span class="identifier">associated_executor</span></code></a> and
                <a class="link" href="reference/get_associated_executor.html" title="get_associated_executor"><code class="computeroutput"><span class="identifier">get_associated_executor</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/asio_handler_invoke.html" title="asio_handler_invoke"><code class="computeroutput"><span class="identifier">asio_handler_invoke</span></code></a>
              </p>
            </td>
<td>
              <p>
                The handler invocation hook has been replaced by the new <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
                requirements and the associated executor traits.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/associated_allocator.html" title="associated_allocator"><code class="computeroutput"><span class="identifier">associated_allocator</span></code></a> and
                <a class="link" href="reference/get_associated_allocator.html" title="get_associated_allocator"><code class="computeroutput"><span class="identifier">get_associated_allocator</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/asio_handler_allocate.html" title="asio_handler_allocate"><code class="computeroutput"><span class="identifier">asio_handler_allocate</span></code></a> and
                <a class="link" href="reference/asio_handler_deallocate.html" title="asio_handler_deallocate"><code class="computeroutput"><span class="identifier">asio_handler_deallocate</span></code></a>
              </p>
            </td>
<td>
              <p>
                The handler allocation hooks have been replaced by the standard Allocator
                requirements and the associated allocator traits.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/const_buffer/data.html" title="const_buffer::data"><code class="computeroutput"><span class="identifier">const_buffer</span><span class="special">::</span><span class="identifier">data</span></code></a>
                and <a class="link" href="reference/mutable_buffer/data.html" title="mutable_buffer::data"><code class="computeroutput"><span class="identifier">mutable_buffer</span><span class="special">::</span><span class="identifier">data</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/buffer_cast.html" title="buffer_cast"><code class="computeroutput"><span class="identifier">buffer_cast</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/const_buffer/size.html" title="const_buffer::size"><code class="computeroutput"><span class="identifier">const_buffer</span><span class="special">::</span><span class="identifier">size</span></code></a>
                and <a class="link" href="reference/mutable_buffer/size.html" title="mutable_buffer::size"><code class="computeroutput"><span class="identifier">mutable_buffer</span><span class="special">::</span><span class="identifier">size</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/buffer_size.html" title="buffer_size"><code class="computeroutput"><span class="identifier">buffer_size</span></code></a>
                for single buffers
              </p>
            </td>
<td>
              <p>
                <code class="computeroutput"><span class="identifier">buffer_size</span></code> is not
                deprecated for single buffers as <code class="computeroutput"><span class="identifier">const_buffer</span></code>
                and <code class="computeroutput"><span class="identifier">mutable_buffer</span></code>
                now satisfy the buffer sequence requirements
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/const_buffer.html" title="const_buffer"><code class="computeroutput"><span class="identifier">const_buffer</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/const_buffers_1.html" title="const_buffers_1"><code class="computeroutput"><span class="identifier">const_buffers_1</span></code></a>
              </p>
            </td>
<td>
              <p>
                The <a class="link" href="reference/ConstBufferSequence.html" title="Constant buffer sequence requirements">ConstBufferSequence</a>
                requirements have been modified such that <code class="computeroutput"><span class="identifier">const_buffer</span></code>
                now satisfies them.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/mutable_buffer.html" title="mutable_buffer"><code class="computeroutput"><span class="identifier">mutable_buffer</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/mutable_buffers_1.html" title="mutable_buffers_1"><code class="computeroutput"><span class="identifier">mutable_buffers_1</span></code></a>
              </p>
            </td>
<td>
              <p>
                The <a class="link" href="reference/MutableBufferSequence.html" title="Mutable buffer sequence requirements">MutableBufferSequence</a>
                requirements have been modified such that <code class="computeroutput"><span class="identifier">mutable_buffer</span></code>
                now satisfies them.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket/get_executor.html" title="basic_socket::get_executor"><code class="computeroutput"><span class="identifier">basic_socket</span><span class="special">::</span><span class="identifier">get_executor</span></code></a> (and corresponding
                member for I/O objects such as timers, serial ports, etc.)
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_io_object/get_io_service.html" title="basic_io_object::get_io_service"><code class="computeroutput"><span class="identifier">basic_io_object</span><span class="special">::</span><span class="identifier">get_io_service</span></code></a>
              </p>
            </td>
<td>
              <p>
                Use <code class="computeroutput"><span class="identifier">get_executor</span><span class="special">().</span><span class="identifier">context</span><span class="special">()</span></code> to obtain the associated <code class="computeroutput"><span class="identifier">io_context</span></code>.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/socket_base/max_listen_connections.html" title="socket_base::max_listen_connections"><code class="computeroutput"><span class="identifier">socket_base</span><span class="special">::</span><span class="identifier">max_listen_connections</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/socket_base/max_connections.html" title="socket_base::max_connections"><code class="computeroutput"><span class="identifier">socket_base</span><span class="special">::</span><span class="identifier">max_connections</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/socket_base/wait_type.html" title="socket_base::wait_type"><code class="computeroutput"><span class="identifier">socket_base</span><span class="special">::</span><span class="identifier">wait_type</span></code></a>, <a class="link" href="reference/basic_socket/wait.html" title="basic_socket::wait"><code class="computeroutput"><span class="identifier">basic_socket</span><span class="special">::</span><span class="identifier">wait</span></code></a>, <a class="link" href="reference/basic_socket/async_wait.html" title="basic_socket::async_wait"><code class="computeroutput"><span class="identifier">basic_socket</span><span class="special">::</span><span class="identifier">async_wait</span></code></a>, <a class="link" href="reference/basic_socket_acceptor/wait.html" title="basic_socket_acceptor::wait"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">wait</span></code></a>, and <a class="link" href="reference/basic_socket_acceptor/async_wait.html" title="basic_socket_acceptor::async_wait"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">async_wait</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/null_buffers.html" title="null_buffers"><code class="computeroutput"><span class="identifier">null_buffers</span></code></a>
              </p>
            </td>
<td>
              <p>
                Operations for reactive I/O.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_acceptor/accept.html" title="basic_socket_acceptor::accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">accept</span></code></a> returns a socket
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_acceptor/accept.html" title="basic_socket_acceptor::accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">accept</span></code></a> takes a socket by
                reference
              </p>
            </td>
<td>
              <p>
                Uses move support so requires C++11 or later. To accept a connection
                into a socket object on a different <code class="computeroutput"><span class="identifier">io_context</span></code>,
                pass the destination context to <code class="computeroutput"><span class="identifier">accept</span></code>.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_acceptor/async_accept.html" title="basic_socket_acceptor::async_accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">async_accept</span></code></a> passes socket
                to handler
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_acceptor/async_accept.html" title="basic_socket_acceptor::async_accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">async_accept</span></code></a> takes a socket
                by reference
              </p>
            </td>
<td>
              <p>
                Uses move support so requires C++11 or later. To accept a connection
                into a socket object on a different <code class="computeroutput"><span class="identifier">io_context</span></code>,
                pass the destination context to <code class="computeroutput"><span class="identifier">async_accept</span></code>.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/connect.html" title="connect"><code class="computeroutput"><span class="identifier">connect</span></code></a>
                overloads that take a range
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/connect.html" title="connect"><code class="computeroutput"><span class="identifier">connect</span></code></a>
                overloads that take a single iterator
              </p>
            </td>
<td>
              <p>
                The <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> function now returns
                a range. When the <code class="computeroutput"><span class="identifier">resolve</span></code>
                function's result is passed directly to <code class="computeroutput"><span class="identifier">connect</span></code>,
                the range overload will be selected.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/async_connect.html" title="async_connect"><code class="computeroutput"><span class="identifier">async_connect</span></code></a>
                overloads that take a range
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/async_connect.html" title="async_connect"><code class="computeroutput"><span class="identifier">async_connect</span></code></a>
                overloads that take a single iterator
              </p>
            </td>
<td>
              <p>
                The <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> function now returns
                a range. When the <code class="computeroutput"><span class="identifier">resolve</span></code>
                function's result is passed directly to <code class="computeroutput"><span class="identifier">async_connect</span></code>,
                the range overload will be selected.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/duration.html" title="basic_socket_streambuf::duration"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">duration</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/duration_type.html" title="basic_socket_streambuf::duration_type"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">duration_type</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/time_point.html" title="basic_socket_streambuf::time_point"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">time_point</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/time_type.html" title="basic_socket_streambuf::time_type"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">time_type</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/expiry.html" title="basic_socket_streambuf::expiry"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expiry</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/expires_at.html" title="basic_socket_streambuf::expires_at"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> and <a class="link" href="reference/basic_socket_streambuf/expires_from_now.html" title="basic_socket_streambuf::expires_from_now"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> getters
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/expires_after.html" title="basic_socket_streambuf::expires_after"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expires_after</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/expires_from_now.html" title="basic_socket_streambuf::expires_from_now"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> setter
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/error.html" title="basic_socket_streambuf::error"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">error</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_streambuf/puberror.html" title="basic_socket_streambuf::puberror"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">puberror</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_iostream/duration.html" title="basic_socket_iostream::duration"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">duration</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_iostream/duration_type.html" title="basic_socket_iostream::duration_type"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">duration_type</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_iostream/time_point.html" title="basic_socket_iostream::time_point"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">time_point</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_iostream/time_type.html" title="basic_socket_iostream::time_type"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">time_type</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_iostream/expiry.html" title="basic_socket_iostream::expiry"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expiry</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_iostream/expires_at.html" title="basic_socket_iostream::expires_at"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> and <a class="link" href="reference/basic_socket_iostream/expires_from_now.html" title="basic_socket_iostream::expires_from_now"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> getters
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_socket_iostream/expires_after.html" title="basic_socket_iostream::expires_after"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expires_after</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_socket_iostream/expires_from_now.html" title="basic_socket_iostream::expires_from_now"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> setter
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/cancel.html" title="basic_waitable_timer::cancel"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">cancel</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/cancel.html" title="basic_waitable_timer::cancel"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">cancel</span></code></a> overload that takes
                <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/cancel_one.html" title="basic_waitable_timer::cancel_one"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">cancel_one</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/cancel_one.html" title="basic_waitable_timer::cancel_one"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">cancel_one</span></code></a> overload that
                takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> setter
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> setter that takes
                <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/expiry.html" title="basic_waitable_timer::expiry"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expiry</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> and <a class="link" href="reference/basic_waitable_timer/expires_from_now.html" title="basic_waitable_timer::expires_from_now"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> getters
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/expires_after.html" title="basic_waitable_timer::expires_after"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_after</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/basic_waitable_timer/expires_from_now.html" title="basic_waitable_timer::expires_from_now"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> setter
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__address/make_address.html" title="ip::address::make_address"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">make_address</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__address/from_string.html" title="ip::address::from_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address</span><span class="special">::</span><span class="identifier">from_string</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__address_v4/make_address_v4.html" title="ip::address_v4::make_address_v4"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">make_address_v4</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__address_v4/from_string.html" title="ip::address_v4::from_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">from_string</span></code></a> and <a class="link" href="reference/ip__address_v6/to_v4.html" title="ip::address_v6::to_v4"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">to_v4</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__address_v6/make_address_v6.html" title="ip::address_v6::make_address_v6"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">make_address_v6</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__address_v6/from_string.html" title="ip::address_v6::from_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">from_string</span></code></a> and <a class="link" href="reference/ip__address_v6/v4_mapped.html" title="ip::address_v6::v4_mapped"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">v4_mapped</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__address/to_string.html" title="ip::address::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address</span><span class="special">::</span><span class="identifier">to_string</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__address/to_string.html" title="ip::address::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address</span><span class="special">::</span><span class="identifier">to_string</span></code></a> that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__address_v4/to_string.html" title="ip::address_v4::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">to_string</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__address_v4/to_string.html" title="ip::address_v4::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">to_string</span></code></a> that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__address_v6/to_string.html" title="ip::address_v6::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">to_string</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__address_v6/to_string.html" title="ip::address_v6::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">to_string</span></code></a> that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                is not required.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                No replacement
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__address_v6/is_v4_compatible.html" title="ip::address_v6::is_v4_compatible"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">is_v4_compatible</span></code></a> and <a class="link" href="reference/ip__address_v6/v4_compatible.html" title="ip::address_v6::v4_compatible"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">v4_compatible</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__network_v4.html" title="ip::network_v4"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">network_v4</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__address_v4/broadcast.html" title="ip::address_v4::broadcast"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">broadcast</span></code></a>, <a class="link" href="reference/ip__address_v4/is_class_a.html" title="ip::address_v4::is_class_a"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">is_class_a</span></code></a>, <a class="link" href="reference/ip__address_v4/is_class_b.html" title="ip::address_v4::is_class_b"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">is_class_b</span></code></a>, <a class="link" href="reference/ip__address_v4/is_class_c.html" title="ip::address_v4::is_class_c"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">is_class_c</span></code></a>, and <a class="link" href="reference/ip__address_v4/netmask.html" title="ip::address_v4::netmask"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">netmask</span></code></a>
              </p>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">network_v4</span></code> class
                adds the ability to manipulate IPv4 network addresses using CIDR
                notation.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__network_v6.html" title="ip::network_v6"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">network_v6</span></code></a>
              </p>
            </td>
<td>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">network_v6</span></code> class
                adds the ability to manipulate IPv6 network addresses using CIDR
                notation.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__basic_address_iterator_lt__address_v4__gt_.html" title="ip::basic_address_iterator&lt; address_v4 &gt;"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4_iterator</span></code></a> and
                <a class="link" href="reference/ip__basic_address_range_lt__address_v4__gt_.html" title="ip::basic_address_range&lt; address_v4 &gt;"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4_range</span></code></a>
              </p>
            </td>
<td>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4_iterator</span></code> and <code class="computeroutput"><span class="identifier">address_v4_range</span></code> classes add the
                ability to iterate over all, or a subset of, IPv4 addresses.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__basic_address_iterator_lt__address_v6__gt_.html" title="ip::basic_address_iterator&lt; address_v6 &gt;"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6_iterator</span></code></a> and
                <a class="link" href="reference/ip__basic_address_range_lt__address_v6__gt_.html" title="ip::basic_address_range&lt; address_v6 &gt;"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6_range</span></code></a>
              </p>
            </td>
<td>
            </td>
<td>
              <p>
                The <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6_iterator</span></code> and <code class="computeroutput"><span class="identifier">address_v6_range</span></code> classes add the
                ability to iterate over all, or a subset of, IPv6 addresses.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/results_type.html" title="ip::basic_resolver::results_type"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">results_type</span></code></a>
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/iterator.html" title="ip::basic_resolver::iterator"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">iterator</span></code></a>
              </p>
            </td>
<td>
              <p>
                Resolvers now produce ranges rather than single iterators.
              </p>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> overloads taking
                hostname and service as arguments
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> overloads taking
                a <a class="link" href="reference/ip__basic_resolver/query.html" title="ip::basic_resolver::query"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">query</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> returns a range
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> returns a single
                iterator
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">async_resolve</span></code></a> overloads
                taking hostname and service as arguments
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">async_resolve</span></code></a> overloads
                taking a <a class="link" href="reference/ip__basic_resolver/query.html" title="ip::basic_resolver::query"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">query</span></code></a>
              </p>
            </td>
<td>
            </td>
</tr>
<tr>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">async_resolve</span></code></a> calls the
                handler with a range
              </p>
            </td>
<td>
              <p>
                <a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">async_resolve</span></code></a> calls the
                handler with a single iterator
              </p>
            </td>
<td>
            </td>
</tr>
</tbody>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2003-2022 Christopher M. Kohlhoff<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="reference/yield_context.html"><img src="../prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../home.png" alt="Home"></a><a accesskey="n" href="std_executors.html"><img src="../next.png" alt="Next"></a>
</div>
</body>
</html>
